package niconama04.shared.data;

import java.io.Serializable;
import java.util.List;

import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.NotPersistent;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;

import niconama04.shared.data.Constants.Pos;

/**
 * 原型クラス
 * 
 * @author brigen
 */
@PersistenceCapable(identityType = IdentityType.APPLICATION, detachable = "true")
public class Original implements Serializable {

	/** Serial Version */
	private static final long serialVersionUID = -8926450160597347164L;

	/** key */
	@PrimaryKey
	@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
	private Long key;

	/** 品詞Key */
	@Persistent
	private int posKey;
	
	/** 品詞 */
	@NotPersistent
	private Pos pos;

	/** baseform */
	@Persistent
	private String baseform;

	/** 単語リスト */
	@NotPersistent
	private List<Word> words;

	/** カテゴリリスト */
	@NotPersistent
	private List<Category> categorys;

	/** ユーザリスト */
	@NotPersistent
	private List<User> users;

	/**
	 * keyを返す
	 *
	 * @return key
	 */
	public Long getKey() {
		return key;
	}

	/**
	 * keyを設定する
	 *
	 * @param x_key key
	 */
	public void setKey(Long x_key) {
		key = x_key;
	}

	/**
	 * 品詞Keyを返す
	 *
	 * @return 品詞Key
	 */
	public int getPosKey() {
		return posKey;
	}

	/**
	 * 品詞Keyを設定する
	 *
	 * @param x_posKey 品詞Key
	 */
	public void setPosKey(int x_posKey) {
		posKey = x_posKey;
	}

	/**
	 * 品詞を返す
	 *
	 * @return 品詞
	 */
	public Pos getPos() {
		return pos;
	}

	/**
	 * 品詞を設定する
	 *
	 * @param x_pos 品詞
	 */
	public void setPos(Pos x_pos) {
		pos = x_pos;
	}

	/**
	 * baseformを返す
	 *
	 * @return baseform
	 */
	public String getBaseform() {
		return baseform;
	}

	/**
	 * baseformを設定する
	 *
	 * @param x_baseform baseform
	 */
	public void setBaseform(String x_baseform) {
		baseform = x_baseform;
	}

	/**
	 * 単語リストを返す
	 *
	 * @return 単語リスト
	 */
	public List<Word> getWords() {
		return words;
	}

	/**
	 * 単語リストを設定する
	 *
	 * @param x_words 単語リスト
	 */
	public void setWords(List<Word> x_words) {
		words = x_words;
	}

	/**
	 * カテゴリリストを返す
	 *
	 * @return カテゴリリスト
	 */
	public List<Category> getCategorys() {
		return categorys;
	}

	/**
	 * カテゴリリストを設定する
	 *
	 * @param x_categorys カテゴリリスト
	 */
	public void setCategorys(List<Category> x_categorys) {
		categorys = x_categorys;
	}

	/**
	 * ユーザリストを返す
	 *
	 * @return ユーザリスト
	 */
	public List<User> getUsers() {
		return users;
	}

	/**
	 * ユーザリストを設定する
	 *
	 * @param x_users ユーザリスト
	 */
	public void setUsers(List<User> x_users) {
		users = x_users;
	}
}